package com.leectrl.utils;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONException;
import com.alibaba.fastjson.JSONObject;

import java.lang.reflect.Type;

import io.netty.buffer.ByteBuf;
import io.netty.handler.codec.http.FullHttpRequest;
import io.netty.util.CharsetUtil;
public class JsonUtil {

    public static boolean isJSON(String jsonStr){
        try{
            JSONObject json= JSON.parseObject(jsonStr);
            return json!=null;
        }catch (JSONException e){
            return false;
        }
    }

    public static String toJson(Object o) {
        return JSON.toJSONString(o);
    }

    public static <T> T fromJson(FullHttpRequest request, Class<T> c) {
        ByteBuf jsonBuf = request.content();
        String jsonStr = jsonBuf.toString(CharsetUtil.UTF_8);
        return JSON.parseObject(jsonStr, c);
    }

    public static <T> T fromJson(String json, Class<T> c) {
        return JSON.parseObject(json, c);
    }

    /**
     * 把json字符串解析成List：
     * params: new TypeToken<List<yourbean>>(){}.getType()
     * 把json字符串解析成map：
     * new TypeToken<HashMap<String,Object>>() {}.getType()
     *
     * @param request
     * @param type    new TypeToken<List<yourbean>>(){}.getType()
     * @return
     */
    public static <T> T fromJson(FullHttpRequest request, Type type) {
        ByteBuf jsonBuf = request.content();
        String json = jsonBuf.toString(CharsetUtil.UTF_8);
        return JSON.parseObject(json, type);
    }

    public static JSONObject fromJson(FullHttpRequest request) {
        ByteBuf jsonBuf = request.content();
        String json = jsonBuf.toString(CharsetUtil.UTF_8);
        return JSON.parseObject(json);
    }
}
